var flatten = function (root){
    if(!root) return //递归终止的条件

    //首先将左右子树展开
    flatten(root.left)
    flatten(root.right)

    //保存右子树
    let right = root.right
    root.right = root.left

    //找到当前右节点的末尾
    const current = root
    while(current.right){
        current = current.right
        //找到当前节点的末尾
    }

    //将原来的右节点拼接在当前末尾的右节点
    current.rigth = right
}

//其实我感觉递归就是要抽象，但是你得把每一个环节都写准确。
//算法就是通过大量的计算来找到解决问题的方式。可以通过数据结构以及一些优化方案。
//每次看题解都有一种恍然大悟的感觉。